#ifndef MATRIX_H
#define MATRIX_H

#include "point.h"
#include "types.h"

tMatrix  **Matrix2Allocate(Point2 offset, Point2 size);
void Matrix2Free(tMatrix **matrix, Point2 offset);
void Matrix2Print(tMatrix **matrix, Point2 offset, Point2 size);

//tMatrix ***Matrix3Allocate(Point3 offset, Point3 size);
void ***Matrix3Allocate(Point3 offset, Point3 size, int dataSize);
void Matrix3Free(void ***matrix, Point3 offset, int dataSize);

int  Matrix3GetNbElements(Point3 size);
void Matrix3Init(tMatrix ***matrix, Point3 offset, Point3 size, tMatrix value);
void Matrix3Swap(tMatrix ****matrix1, tMatrix ****matrix2);
void Matrix3Print(tMatrix ***matrix, Point3 offset, Point3 size);
void Matrix3Copy(tMatrix ***src, tMatrix ***dst, Point3 offset, Point3 size);

#endif
